package com.ujson.chat.common.codec;

import com.ujson.chat.common.enums.ProtoVersion;
import com.ujson.chat.common.proto.MessageProto;
import com.ujson.chat.common.utils.Constants;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;

/**
 * 自定义Proto编码器
 */
public class ProtoEncoder extends MessageToByteEncoder<MessageProto.Message> {
    protected void encode(ChannelHandlerContext channelHandlerContext, MessageProto.Message message, ByteBuf byteBuf) throws Exception {
        byte[] bytes = message.toByteArray();

        byteBuf.writeInt(bytes.length);
        byteBuf.writeShort(Constants.MAGIC);
        byteBuf.writeInt(ProtoVersion.V1.getCode());
        byteBuf.writeBytes(bytes);

    }
}
